--- /dev/null
+From: Alexander Larsson <alexl@redhat.com>
+Date: Thu, 23 Jun 2016 11:51:15 +0200
+Subject: pull: Correctly handle repo->parent_repo when applying static deltas
+
+In flatpak i was using a parent repo, and it failed to update
+with ENOENT when dispatching an set-read-source opcode, because the
+object it referenced was in the parent repo.
+
+This fixes that by making _ostree_repo_read_bare_fd look
+at parent_repo.
+
+Closes: #362
+Approved by: cgwalters
+Origin: upstream, 2016.7, commit:fc4a7ec35e6e7a3a2db80257508faa592329786c
+---
+ src/libostree/ostree-repo.c | 21 ++++++++++++++++-----
+ 1 file changed, 16 insertions(+), 5 deletions(-)
+
+diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c
+index e86685b..b835348 100644
+--- a/src/libostree/ostree-repo.c
++++ b/src/libostree/ostree-repo.c
+@@ -2715,18 +2715,29 @@ _ostree_repo_read_bare_fd (OstreeRepo *self,
+ GError **error)
+ {
+ char loose_path_buf[_OSTREE_LOOSE_PATH_MAX];
+-
++
+ g_assert (self->mode == OSTREE_REPO_MODE_BARE ||
+ self->mode == OSTREE_REPO_MODE_BARE_USER);
+
+ _ostree_loose_path (loose_path_buf, checksum, OSTREE_OBJECT_TYPE_FILE, self->mode);
+-
+- *out_fd = openat (self->objects_dir_fd, loose_path_buf, O_RDONLY | O_CLOEXEC);
+- if (*out_fd < 0)
++
++ if (!ot_openat_ignore_enoent (self->objects_dir_fd, loose_path_buf, out_fd, error))
++ return FALSE;
++
++ if (*out_fd == -1)
+ {
+- glnx_set_error_from_errno (error);
++ if (self->parent_repo)
++ return _ostree_repo_read_bare_fd (self->parent_repo,
++ checksum,
++ out_fd,
++ cancellable,
++ error);
++
++ g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
++ "No such file object %s", checksum);
+ return FALSE;
+ }
++
+ return TRUE;
+ }
+